package sisgeroupas.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import sisgeroupas.factory.ConnectionBD;
import sisgeroupas.model.ModelCliente;
import sisgeroupas.model.ModelProduto;


/**
 *
 * @author root
 */
public class ProdutoDao
{
    private Connection connection;
   /*int id;
   String nome;
   String sexo;
   String dataNascimento;
    */
    public ProdutoDao()
    {
        this.connection = new ConnectionBD().getConnection();
    }
    public void inserir(ModelProduto produto)
    {
        String sql = "INSERT INTO produto(descricao,idfornecedor,marca, tamanho, preco,quantidade) VALUES(?,?,?,?,?,?)";
        try
        {
            PreparedStatement stmt = connection.prepareStatement(sql);
            
            stmt.setString(1,produto.getDescricao());
            stmt.setInt(2,produto.getFornecedor());
            stmt.setString(3,produto.getMarca());
            stmt.setString(4,produto.getTamanho()); 
            stmt.setFloat(5,produto.getPreco());
            stmt.setInt(6,produto.getQuantidade());
            
                       
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u.getMessage());  
            throw new RuntimeException(u);
            
        }
    }
        
    
    
    
  
    
    public void apagar(ModelProduto produto)
     {
        String sql = "DELETE FROM produto WHERE idProduto = ?";
        //JOptionPane.showMessageDialog(null,"Executou sql");
        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = connection.prepareStatement(sql);
            //JOptionPane.showMessageDialog(null,"Executou sql");
            
            stmt.setInt(1, produto.getId());
                                 
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u);
        }
    }
    
     public ArrayList<ModelProduto> pesquisar(ModelProduto produto)
     {
         //String sql = new String();
         ArrayList<ModelProduto> resultados = new ArrayList<ModelProduto>();
         //JOptionPane.showMessageDialog(null,cliente);
         //sql= "SELECT * FROM pessoa WHERE  nome  like ?";
         
         

        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM produto where descricao like "+"'%" + produto.getDescricao()+ "%'");
            //stmt.setString(1,);
            
            
            //Aqui coloca apenas uma variavel que usou para pesquisar ou 2 se for o caso
            //stmt.setString(1, cadastro.getNome());
            
            ResultSet rs= stmt.executeQuery();;
            
            while (rs.next()) {  
            ModelProduto temp = new ModelProduto();  
            // pega todos os atributos do produto
            temp.setId(rs.getInt("idProduto"));
            temp.setDescricao(rs.getString("descricao"));
            temp.setFornecedor(rs.getInt("idfornecedor"));
            temp.setMarca(rs.getString("marca")); 
            temp.setTamanho(rs.getString("tamanho"));
            temp.setPreco(rs.getFloat("preco"));
            temp.setQuantidade(rs.getInt("quantidade"));
              
            resultados.add(temp);
            //JOptionPane.showMessageDialog(null, temp.getNome());
        }
                                 
            stmt.execute();
            stmt.close();
            rs.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u.getMessage());
        }
        return resultados;
    }
     
     
     public ModelProduto pesquisar(int idProduto)
     {
         //String sql = new String();
         ModelProduto resultado = new ModelProduto();
         //JOptionPane.showMessageDialog(null,cliente);
         //sql= "SELECT * FROM pessoa WHERE  nome  like ?";
         
         

        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM produto where idProduto ="+ idProduto);
            //stmt.setString(1,);
            
            
            //Aqui coloca apenas uma variavel que usou para pesquisar ou 2 se for o caso
            //stmt.setString(1, cadastro.getNome());
            
            ResultSet rs= stmt.executeQuery();;
            
            while (rs.next()) {  
            ModelProduto temp = new ModelProduto();  
            // pega todos os atributos do produto
            temp.setId(rs.getInt("idProduto"));
            temp.setDescricao(rs.getString("descricao"));
            temp.setFornecedor(rs.getInt("idfornecedor"));
            temp.setMarca(rs.getString("marca")); 
            temp.setTamanho(rs.getString("tamanho"));
            temp.setPreco(rs.getFloat("preco"));
            temp.setQuantidade(rs.getInt("quantidade"));
              
            resultado =(temp);
            //JOptionPane.showMessageDialog(null, temp.getNome());
        }
                                 
            stmt.execute();
            stmt.close();
            rs.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u.getMessage());
        }
        return resultado;
    }
     public void atualizar(ModelProduto produto)
    {
        
        String sql = "UPDATE  produto set descricao=?,idfornecedor=?, marca=?, tamanho=?,preco=?,quantidade=? where idProduto=? ";
        try
        {
            PreparedStatement stmt = connection.prepareStatement(sql);
            
            
            
            stmt.setString(1,produto.getDescricao());
            stmt.setInt(2,produto.getFornecedor());
            stmt.setString(3,produto.getMarca());
            stmt.setString(4,produto.getTamanho());
            stmt.setFloat(5,produto.getPreco());
            stmt.setInt(6,produto.getQuantidade());
            
            stmt.setInt(7,produto.getId());
            
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u);
            //JOptionPane.showMessageDialog(null, "Erro SQL:" + u);
        }
    }
}